const { request } = require('../../../utils/request');

Page({
  data: {
    product: {
      id: null,
      name: '',
      price: 0,
      image_url: '',
      unit: '',
      stock: 0,
      category_id: null,
      is_hot: false,
      is_promo: false,
      is_new: false,
      sort: 999,
      detail: '',
      parameter: '',
      service: ''
    },
    categories: [],
    categoryIndex: -1
  },

  onLoad(options) {
    const productId = options.id;
    this.loadCategories();
    this.loadProductDetails(productId);
  },

  // 加载分类数据
  async loadCategories() {
    try {
      const res = await request({
        url: '/category',
        method: 'GET'
      });
      if (res.code === 2000) {
        this.setData({
          categories: res.data
        });
      }
    } catch (error) {
      wx.showToast({ title: '获取分类数据失败', icon: 'none' });
    }
  },

  // 加载产品详情
  async loadProductDetails(productId) {
    try {
      const res = await request({
        url: `/product/${productId}`,
        method: 'GET'
      });
      if (res.code === 2000) {
        const product = res.data;
        const categoryIndex = this.data.categories.findIndex(item => item.id === product.category_id);
        this.setData({
          product,
          categoryIndex
        });
      }
    } catch (error) {
      wx.showToast({ title: '获取产品详情失败', icon: 'none' });
    }
  },

  // 处理分类选择事件
  onCategoryChange(e) {
    const index = e.detail.value;
    const category = this.data.categories[index];
    this.setData({
      categoryIndex: index,
      'product.category_id': category.id
    });
  },

  // 处理产品名称输入
  onProductNameInput(e) {
    this.setData({
      'product.name': e.detail.value
    });
  },

  // 处理产品价格输入
  onProductPriceInput(e) {
    let value = e.detail.value;
    value = value.replace(/[^\d.]/g, '');
    value = value.replace(/^\./g, '');
    value = value.replace(/\.{2,}/g, '.');
    value = value.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.');
    value = value.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3');
    this.setData({
      'product.price': value
    });
  },

  // 处理产品图片 URL 输入
  onProductImageUrlInput(e) {
    this.setData({
      'product.image_url': e.detail.value
    });
  },

  // 处理产品单位输入
  onProductUnitInput(e) {
    this.setData({
      'product.unit': e.detail.value
    });
  },

  // 处理产品库存输入
  onProductStockInput(e) {
    this.setData({
      'product.stock': parseInt(e.detail.value, 10)
    });
  },

  // 切换是否热销
  toggleIsHot() {
    this.setData({
      'product.is_hot': !this.data.product.is_hot
    });
  },

  // 切换是否促销
  toggleIsPromo() {
    this.setData({
      'product.is_promo': !this.data.product.is_promo
    });
  },

  // 切换是否新品
  toggleIsNew() {
    this.setData({
      'product.is_new': !this.data.product.is_new
    });
  },

  // 处理排序值输入
  onProductSortInput(e) {
    this.setData({
      'product.sort': parseInt(e.detail.value, 10)
    });
  },

  // 处理商品详情输入
  onProductDetailInput(e) {
    this.setData({
      'product.detail': e.detail.value
    });
  },

  // 处理商品参数输入
  onProductParameterInput(e) {
    this.setData({
      'product.parameter': e.detail.value
    });
  },

  // 处理售后保障输入
  onProductServiceInput(e) {
    this.setData({
      'product.service': e.detail.value
    });
  },

  // 返回上一页
  navigateBack() {
    wx.navigateBack();
  },

  // 更新产品信息
  async updateProduct() {
    if (!this.data.product.name || !this.data.product.price || !this.data.product.category_id) {
      wx.showToast({ title: '产品名称、价格和分类为必填项', icon: 'none' });
      return;
    }
    const price = parseFloat(this.data.product.price);
    if (isNaN(price)) {
      wx.showToast({ title: '请输入有效的价格', icon: 'none' });
      return;
    }
    const productData = { ...this.data.product, price };

    try {
      wx.showLoading({ title: '修改中...' });
      const res = await request({
        url: `/product/${this.data.product.id}`,
        method: 'PUT',
        data: productData
      });
      wx.hideLoading();

      if (res.code === 2000) {
        wx.showToast({ title: '产品修改成功' });
        wx.navigateBack();
      } else {
        wx.showToast({ title: res.message || '产品修改失败', icon: 'none' });
      }
    } catch (error) {
      wx.hideLoading();
      wx.showToast({ title: '请求失败，请稍后重试', icon: 'none' });
      console.error('修改产品请求出错:', error);
    }
  }
});